package com.gitee.wsl.text.regex.sample

val Regex.Companion.usernameRegex get() = Regex("^[a-z\\d!#$%&'*+\\-/=?^_`{|}~]+$", RegexOption.IGNORE_CASE)

val Regex.Companion.usernameUtf8Regex get() = Regex(
    "^[a-z\\d!#$%&'*+\\-/=?^_`{|}~\u00A1-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$",
    RegexOption.IGNORE_CASE,
)

/**
 * A password-type regular expression with the following properties:
 * These password requirements are commonly used, but you are encouraged to use your own regex if needed
 * - At least one latin Uppercase letter
 * - At least one latin lowercase letter
 * - At least one digit
 * - Optional special characters (not required)
 * - Minimum length at least 8 characters
 * - Maximum can be any. Use other rules to specify max length
 */
val Regex.Companion.Password: Regex by lazy {
    """^(?=.*\p{Upper})(?=.*\p{Lower})(?=.*\d)[\p{Upper}\p{Lower}\d\p{Punct}]{8,}$""".toRegex()
}

/**
 * 中文姓名
 * 维吾尔族姓名里面的点是 · 输入法中文状态下，键盘左上角数字1前面的那个符号；<br></br>
 * 错误字符：`．.。．.`<br></br>
 * 正确维吾尔族姓名：
 * <pre>
 * 霍加阿卜杜拉·麦提喀斯木
 * 玛合萨提别克·哈斯木别克
 * 阿布都热依木江·艾斯卡尔
 * 阿卜杜尼亚孜·毛力尼亚孜
</pre> *
 * <pre>
 * ----------
 * 错误示例：孟  伟                reason: 有空格
 * 错误示例：连逍遥0               reason: 数字
 * 错误示例：依帕古丽-艾则孜        reason: 特殊符号
 * 错误示例：牙力空.买提萨力        reason: 新疆人的点不对
 * 错误示例：王建鹏2002-3-2        reason: 有数字、特殊符号
 * 错误示例：雷金默(雷皓添）        reason: 有括号
 * 错误示例：翟冬:亮               reason: 有特殊符号
 * 错误示例：李                   reason: 少于2位
 * ----------
</pre> *
 * 总结中文姓名：2-60位，只能是中文和维吾尔族的点·
 * 放宽汉字范围：如生僻姓名 刘欣䶮yǎn
 */
val Regex.Companion.CHINESE_NAME: Regex
    get() = "^[\u3400-\u9FFF·]{2,60}$".toRegex()
